import { request, downloadBlobFile } from 'src/utils';

export interface AreaDto {
  areaId: IdType; // 小区ID
  areaName: string; // 小区名
  communityId: number; // 社区ID
  communityName: string; // 社区名称
  areaAddr: string; // 小区地址
  buildArea: number; // 建筑面积
  plantArea: number; // 绿化面积
  totalArea: number; // 占地面积(总面积)
  sortNo: number; // 排序号
  remark: string; // 小区简介
  disabled: boolean; // 是否作废
  createdBy: string; // 创建人
  createdTime: Date; // 创建时间
}

const baseUrl = '/api/community/area';

/**
 * 查单个
 */
export function readData(areaId: IdType): Promise<AreaDto> {
  return request.get(baseUrl + '/' + areaId);
}

/**
 * 查集合
 */
export function queryList(query: PageQuery): Promise<PageResult<AreaDto>> {
  return request.get(baseUrl, { params: query });
}

/**
 * 新增，修改
 */
export function saveOrUpdate(area: AreaDto): Promise<AreaDto> {
  return area.areaId ? request.put(baseUrl + '/' + area.areaId, area) : request.post(baseUrl, area);
}

/**
 * 删除
 */
export function deleteByIds(ids: IdType[]): Promise<void> {
  return request.delete(baseUrl, { params: { ids } });
}

/**
 * 导出
 */
export function exportData(query: PageQuery): Promise<void> {
  return new Promise((resolve, reject) => {
    request
      .get(baseUrl + '/export', { params: query, responseType: 'blob' })
      .then((res) => {
        downloadBlobFile(res);
        resolve();
      })
      .catch((err) => reject(err));
  });
}

export default { readData, queryList, saveOrUpdate, deleteByIds, exportData } as CrudApi<AreaDto>;
